package com.tangtang.gulimall.product.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;

import com.tangtang.common.Vaildatoroption.ListValue;//将自定义注解放入公共类中进行使用

import com.tangtang.gulimall.product.Grops.AddGrops;
import com.tangtang.gulimall.product.Grops.UpdateGrops;
import com.tangtang.gulimall.product.Grops.UpdateStatusGrops;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*;

/**
 * 品牌
 * 
 * @author tangtang
 * @email a1104707271@vip.qq.com
 * @date 2020-09-11 15:22:08
 * 因为写了校验码返回，所以，这里提示消息可以不用写，会返回相应的实体类的bean校验错误
 */
@Data
@TableName("pms_brand")
@Getter
@Setter
@ToString
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 品牌id
     * @NotNull和@Null同时使用得添加自己的定义规则
     * 一个id属性使用不同的分组来做区别，添加的接口是不需要id，更新的时候是需要id等
	 */

	//更新必须携带指定id
	@NotNull(message = "{updategetid.id}",groups = UpdateGrops.class)
    @Null(message = "{addnotgetid.id}",groups = AddGrops.class)
	@TableId
	private Long brandId;
	/**
	 * 品牌名
	 */
	@NotBlank(message = "{brandnamenotnull.name}",groups = {UpdateGrops.class,AddGrops.class})
	private String name;
	/**
	 * 品牌logo地址
	 */
	@NotBlank(message = "{logoaddressnotnull.address}",groups = AddGrops.class)
    @URL(message = "{logourlisuse.url}",groups = {UpdateGrops.class,AddGrops.class})
	private String logo;
	/**
	 * 介绍
	 */
	private String descript;
	/**
	 * 显示状态[0-不显示；1-显示]
     * @ListValue是自定义注解，里面的vals是注解中定义的一个数组
	 */
	@NotNull(message = "{status.messages}",groups = {UpdateGrops.class,AddGrops.class, UpdateStatusGrops.class})
    @ListValue(vals = {0,1},groups = {UpdateGrops.class,AddGrops.class,UpdateStatusGrops.class})
	private Integer showStatus;
	/**
	 * 检索首字母
     * pattren 使用的是正则表达式，regexp后面的引号是正则表达式的写法
	 */
	@NotBlank(message = "{first.messages}",groups = AddGrops.class)
	@Pattern(regexp = "^[a-zA-Z]$",message = "检索首字母必须是字母（不分大小写）",groups = {UpdateGrops.class,AddGrops.class})
	private String firstLetter;
	/**
	 * 排序
	 */
	@NotNull(groups = AddGrops.class)
    @Min(value = 0,message = "{sort.min}",groups = {AddGrops.class,UpdateGrops.class})
	private Integer sort;

}
